package com.apollographql.apollo.rxhos;

import io.reactivex.rxjava3.annotations.NonNull;
import io.reactivex.rxjava3.core.Scheduler;
import io.reactivex.rxjava3.schedulers.Schedulers;

/**
 * 选择model运行切换种类
 */
public class HosScheduler {
    /**
     * 在后台的固定数量的专用线程上运行计算密集型工作。大多数异步操作符将此作为其默认调度程序。
     */
    public static final int TYPE_SCHEDULER_COMPUTATION=0;
    /**
     * 在一组动态变化的线程上运行类似I/ o或阻塞操作。
     */
    public static final int TYPE_SCHEDULER_IO=1;
    /**
     * 在后台的固定数量的专用线程上运行计算密集型工作。大多数异步操作符将此作为其默认调度程序。
     */
    public static final int TYPE_SCHEDULER_SINGLE=2;
    /**
     *  在参与的线程中以顺序和FIFO方式运行工作，通常用于测试目的。
     */
    public static final int TYPE_SCHEDULER_TRAMPOLINE=3;

    public static @NonNull Scheduler switchTodoSubscribeOn(int id){
           switch (id){
               case TYPE_SCHEDULER_COMPUTATION:
                   return Schedulers.computation();
               case TYPE_SCHEDULER_IO:
                   return Schedulers.io();
               case TYPE_SCHEDULER_SINGLE:
                   return Schedulers.single();
               case TYPE_SCHEDULER_TRAMPOLINE:
                   return Schedulers.trampoline();
           }
        return null;
    }

}
